package juc.scenarios.startup.model;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

/**
 * 服务状态模型
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ServiceStatus {
    
    /**
     * 服务名称
     */
    private String serviceName;
    
    /**
     * 服务状态
     */
    private ServiceState state;
    
    /**
     * 状态描述信息
     */
    private String message;
    
    /**
     * 检查开始时间
     */
    private LocalDateTime startTime;
    
    /**
     * 检查结束时间
     */
    private LocalDateTime endTime;
    
    /**
     * 检查耗时（毫秒）
     */
    private Long duration;
    
    /**
     * 服务状态枚举
     */
    public enum ServiceState {
        /** 等待检查 */
        PENDING,
        /** 检查中 */
        CHECKING,
        /** 正常 */
        HEALTHY,
        /** 异常 */
        UNHEALTHY,
        /** 超时 */
        TIMEOUT
    }
}